ScalaでAndroidアプリケーションを作る
はじめに
Androidアプリケーションを開発するための言語はJavaです。(NDKでC/C++使ったりもできますが) しかしAndroidの普及にともなって、さまざまな手法でAndroidのアプリケーションを開発することができるようになりました。
いろいろと実装する手法はありますが、今回はScalaを用いてAndroidアプリケーションを動かす方法をご紹介します。
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.3
- パッケージマネージャ : Homebrew 0.8.1
ScalaでAndroidアプリケーションを作る
ではScalaでAndroidアプリケーションのひな形を作成し、エミュレータで動かしてみましょう。まずは環境の構築です。 必要なソフトウェアはHomebrewでインストールします。
1.必要なものをインストール
Android SDK,Scala,sbt(Scala用ビルドツール)をインストールします。
$ brew install android-sdk $ brew install scala $ brew install sbt
2.SDKマネージャのインストールとavd作成
次に、Android SDK ManagerでToolsとAndroid4.x用のSDKをダウンロードしましょう。 コンソールでandroidコマンドを実行すると、GUIのSDKマネージャが起動するので、パッケージを選択してインストールします。
$ android
次にエミュレータを作成します。android create コマンドで作成しましょう。 ※-tの後に指定するIDはandroid listでIDを確認して、適切なIDを指定してください。
$ android create avd -n scala_test -t 1
3.giter8のインストール
giter8とは、Githubのリポジトリに登録されているテンプレートからプロジェクトを生成するためのツールです。 giter8はconscriptという別のツールを使用してインストールするので、conscriptをインストールしてからgiter8をインストールします。
$ curl https://raw.github.com/n8han/conscript/master/setup.sh | sh $ ~/bin/cs n8han/giter8
4.Scala Androidプロジェクトひな形作成
適当なディレクトリを作成し、giter8(g8コマンド)を使用してプロジェクトのひな形を持ってきます。 また、ANDROID_HOME環境変数が設定されていなければ設定しておきましょう。
$ mkdir android-scala $ cd android-scala $ ~/bin/g8 jberkel/android-app $ cd <アプリケーション名> $ export ANDROID_HOME=/path/your/android-sdk/
5.Activityのソースを確認
作成したプロジェクトのsrc/main/scala/MainActivity.scalaを少し見てみましょう。 Scalaで記述されたActivityです。
package my.android.project import _root_.android.app.Activity import _root_.android.os.Bundle class MainActivity extends Activity with TypedActivity { override def onCreate(bundle: Bundle) { super.onCreate(bundle) setContentView(R.layout.main) findView(TR.textview).setText("hello, world!") } }
6.実行してみる
sbtを起動し、パッケージング、エミュレータ起動、アプリケーションのインストールをします。
$ sbt > android:package-debug > android:emulator-start scala_test > android:install-emulator
作成したアプリケーションが追加されているので、起動してみてください。 Hello worldが表示されるはずです。
まとめ
ScalaでAndroidアプリケーションを記述して開発することができました。 まだJavaほど環境は整っていませんが、開発できるレベルにはあると思います。
参考サイトなど
- android plugin Getting started : https://github.com/jberkel/android-plugin/wiki/getting-started